﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BE_CruzDelSur;
using System.Data.SqlClient;
using System.Data;
using BR_CruzDelSur.Interfaces;

namespace BR_CruzDelSur
{
    public class BR_Carga : IBR_Carga
    {
        Conexion conn = new Conexion();
        IBR_Cliente ECliente = new BR_Cliente();
        IBR_ProgramacionRuta EProgramacionRuta = new BR_ProgramacionRuta();
        IBR_Util EEstado = new BR_Util();
        IBR_FichaMovimiento EFMovimiento = new BR_FichaMovimiento();

        public void f_LimpiarCargaGuiaRemision(int codigoGuia)
        {
            SqlParameter[] param = new SqlParameter[1];
            param[0] = new SqlParameter("INT_CODIGO_GUIA_REMISION", SqlDbType.Int);
            param[0].Value = codigoGuia;
            param[0].Direction = ParameterDirection.Input;

            try
            {
                SqlHelper.ExecuteNonQuery(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_LIMPIARGUIAREMISIONCARGA", param);
            }
            catch (Exception ex)
            {
            }
        }

        public void f_ActualizarCargaGuiaRemision(int codigoGuia, string codigoCarga)
        {
            SqlParameter[] param = new SqlParameter[2];
            param[0] = new SqlParameter("INT_CODIGO_GUIA_REMISION", SqlDbType.Int);
            param[0].Value = codigoGuia;
            param[0].Direction = ParameterDirection.Input;
            param[1] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[1].Value = codigoCarga;
            param[1].Direction = ParameterDirection.Input;

            try
            {
                SqlHelper.ExecuteNonQuery(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_CAMBIARGUIAREMISIONCARGA", param);                
            }
            catch (Exception ex)
            {
            }
        }

        public void f_ActualizarEstado(string codigo, string estado)
        {
            SqlParameter[] param = new SqlParameter[2];
            param[0] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[0].Value = codigo;
            param[0].Direction = ParameterDirection.Input;
            param[1] = new SqlParameter("CHR_ESTADO", SqlDbType.VarChar);
            param[1].Value = estado;
            param[1].Direction = ParameterDirection.Input;

            try
            {
                int intCodigoCarga = Convert.ToInt16(codigo);
                SqlHelper.ExecuteNonQuery(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_CAMBIARESTADOCARGA", param);

                int tipomovimiento = Convert.ToInt16(EEstado.f_BuscarUtilXCodigo("2", "TM").Codigo);
                string strEstado = EEstado.f_BuscarUtilXCodigo(estado, "ES").Nombre;

                if (EFMovimiento.f_VerificarMovimientoCarga(intCodigoCarga, strEstado) == 0)
                {
                    string descripcion = "Registro de movimiento de carga " + intCodigoCarga.ToString().PadLeft(10, '0') + " en estado " + estado;
                    EFMovimiento.f_InsertarMovimiento(descripcion, intCodigoCarga, tipomovimiento);
                }
            }
            catch (Exception ex)
            {                
            }
        }

        public bool f_VerificarCargaXCodigoSeguridad(string codigo, string codigoSeguridad, string DNIClienteDestino)
        {
            SqlParameter[] param = new SqlParameter[3];
            param[0] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[0].Value = codigo;
            param[0].Direction = ParameterDirection.Input;
            param[1] = new SqlParameter("VCH_CODIGO_SEGURIDAD", SqlDbType.VarChar);
            param[1].Value = codigoSeguridad;
            param[1].Direction = ParameterDirection.Input;
            param[2] = new SqlParameter("VCH_DNI_CLIENTEDESTINO", SqlDbType.VarChar);
            param[2].Value = DNIClienteDestino;
            param[2].Direction = ParameterDirection.Input;
            

            try
            {
                DataSet ds = SqlHelper.ExecuteDataSet(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_VERIFICARCARGAXCODIGOSEGURIDAD", param);

                if (Convert.ToInt16(ds.Tables[0].Rows[0]["TOTAL"]) == 0)
                    return false;
                else
                    return true;
            }
            catch (Exception ex)
            {
                return false;
            }        
        }

        public bool f_eliminarCarga(int codigo) 
        {
            SqlParameter[] param = new SqlParameter[1];
            param[0] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[0].Value = codigo;
            param[0].Direction = ParameterDirection.Input;

            try
            {
                int result = SqlHelper.ExecuteNonQuery(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_ELIMINARCARGA", param);
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }        
        }

        public BE_Carga f_obtenerCarga(string codigo)
        { 
            SqlParameter[] param = new SqlParameter[1];
            param[0] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[0].Value = codigo;
            param[0].Direction = ParameterDirection.Input;

            DataSet ds = SqlHelper.ExecuteDataSet(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_OBTENERCARGA", param);
            BE_Carga carga = null;

            foreach (DataRow item in ds.Tables[0].Rows)
            {
                carga = new BE_Carga()
                {
                    CodigoCarga = Convert.ToInt32(item["INT_CODIGO_CARGA"].ToString()),
                    DNIClienteOrigen = item["VCH_CLIENTE_ORIGEN"].ToString(),
                    DNIClienteDestino = item["VCH_CLIENTE_DESTINO"].ToString(),
                    CodigoProgramacionRuta = Convert.ToInt32(item["INT_CODIGO_PROGRAMACION_RUTA"].ToString()),
                    Peso = Convert.ToDouble(item["DBL_PESO"].ToString()),
                    Largo = Convert.ToDouble(item["DBL_LARGO"].ToString()),
                    Ancho = Convert.ToDouble(item["DBL_ANCHO"].ToString()),
                    Profundidad = Convert.ToDouble(item["DBL_PROFUNDIDAD"].ToString()),
                    EstadoCarga = item["CHR_ESTADO"].ToString(),
                    Observacion = item["VCH_OBSERVACION"].ToString(),
                    FechaRegistro = Convert.ToDateTime(item["DTM_FECHA_REGISTRO"].ToString()),
                    TipoCarga = Convert.ToInt32(item["INT_TIPO_CARGA"].ToString()),
                    TipoPago = Convert.ToInt32(item["INT_TIPO_PAGO"].ToString()),
                    CodigoSeguridad = item["VCH_CODIGO_SEGURIDAD"].ToString()
                };

                carga.ClienteOrigen = ECliente.f_BuscaClienteDNI(carga.DNIClienteOrigen);
                carga.ClienteDestino = ECliente.f_BuscaClienteDNI(carga.DNIClienteDestino);
                carga.ProgramacionRuta = EProgramacionRuta.f_BuscaProgramacionXCodigo(carga.CodigoProgramacionRuta);
                carga.Estado = EEstado.f_BuscarUtilXCodigo(carga.EstadoCarga, "ES");
                return carga;
            }
            return carga;
        }


        public List<BE_Carga> f_BuscaAsignarCargaPendiente(int recojoID)
        {
            List<BE_Carga> lst = new List<BE_Carga>();
            SqlParameter[] param = new SqlParameter[1];
            
            param[0] = new SqlParameter("INT_CODIGO_RECOJO", SqlDbType.Int);
            param[0].Value = recojoID;
            param[0].Direction = ParameterDirection.Input;

            DataSet ds = SqlHelper.ExecuteDataSet(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_LISTACARGAASIGNADA", param);

            BE_Carga carga;
            foreach (DataRow item in ds.Tables[0].Rows)
            {
                carga = new BE_Carga() { CodigoCarga = Convert.ToInt32(item["INT_CODIGO_CARGA"].ToString()), Departamento = item["DESTINO"].ToString(), FechaDestino = Convert.ToDateTime(item["DTM_FECHA_DESTINO"].ToString()).ToString("dd/MM/yyyy") };
                lst.Add(carga);
            }

            return lst;
        }

        public List<BE_Carga> f_ListarCargasAEntregar(string documento, int departamento)
        { 
            List<BE_Carga> lst = new List<BE_Carga>();
            SqlParameter[] param = new SqlParameter[2];
            param[0] = new SqlParameter("VCH_DOC_CLIENTE", SqlDbType.VarChar);
            param[0].Value = documento;
            param[0].Direction = ParameterDirection.Input;
            param[1] = new SqlParameter("INT_DEPARTAMENTO", SqlDbType.Int);
            param[1].Value = departamento;
            param[1].Direction = ParameterDirection.Input;

            DataSet ds = SqlHelper.ExecuteDataSet(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_LISTACARGAENTREGADA", param);
            
            BE_Carga carga;
            foreach (DataRow item in ds.Tables[0].Rows)
            {
                carga = new BE_Carga() { CodigoCarga = Convert.ToInt32(item["INT_CODIGO_CARGA"].ToString()), NombreClienteOrigen = item["CLIENTE_ORIGEN"].ToString(), Departamento = item["DEPARTAMENTO"].ToString(), FechaRegistro = Convert.ToDateTime(item["DTM_FECHA_ORIGEN"].ToString()), NombreTipoPago = item["TIPO_PAGO"].ToString()};
                lst.Add(carga);
            }

            return lst;
        }

        public List<BE_Carga> f_ListarCargas(string documento, int departamento)
        { 
            List<BE_Carga> lst = new List<BE_Carga>();
            SqlParameter[] param = new SqlParameter[2];
            param[0] = new SqlParameter("VCH_DOC_CLIENTE", SqlDbType.VarChar);
            param[0].Value = documento;
            param[0].Direction = ParameterDirection.Input;
            param[1] = new SqlParameter("INT_DEPARTAMENTO", SqlDbType.Int);
            param[1].Value = departamento;
            param[1].Direction = ParameterDirection.Input;

            DataSet ds = SqlHelper.ExecuteDataSet(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_LISTACARGAENTREGADA", param);
            
            return lst;
        }

        public List<BE_Carga> f_ListarCargas(String cliente, String fDesde, String fHasta, string estado, int IDcarga = -1, string documento = "")
        {
            DateTime dtmDesde;

            if(!DateTime.TryParse(fDesde, out dtmDesde))
            {
                dtmDesde = new DateTime(1900, 1, 1);
            }

            DateTime dtmHasta;

            if (!DateTime.TryParse(fHasta, out dtmHasta))
            {
                dtmHasta = new DateTime(1900, 1, 1);
            }

            List<BE_Carga> lst = new List<BE_Carga>();
            SqlParameter[] param = new SqlParameter[6];

            param[0] = new SqlParameter("VCH_NOM_CLIENTE", SqlDbType.VarChar);
            param[0].Value = cliente;
            param[0].Direction = ParameterDirection.Input;
            param[1] = new SqlParameter("DTM_FECHA_DESDE", SqlDbType.DateTime);
            param[1].Value = dtmDesde;
            param[1].Direction = ParameterDirection.Input;
            param[2] = new SqlParameter("DTM_FECHA_HASTA", SqlDbType.DateTime);
            param[2].Value = dtmHasta;
            param[2].Direction = ParameterDirection.Input;
            param[3] = new SqlParameter("CHR_ESTADO", SqlDbType.Char);
            param[3].Value = estado;
            param[3].Direction = ParameterDirection.Input;
            param[4] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[4].Value = IDcarga;
            param[4].Direction = ParameterDirection.Input;
            param[5] = new SqlParameter("VCH_DOCUMENTO", SqlDbType.VarChar);
            param[5].Value = documento;
            param[5].Direction = ParameterDirection.Input;

            DataSet ds = SqlHelper.ExecuteDataSet(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_LISTACARGASXFILTROS", param);
            BE_Carga carga = null;
            foreach (DataRow item in ds.Tables[0].Rows)
            {
                carga = new BE_Carga() { CodigoCarga = Convert.ToInt32(item["INT_CODIGO_CARGA"].ToString()), DNIClienteOrigen = item["VCH_CLIENTE_ORIGEN"].ToString(), DNIClienteDestino = item["VCH_CLIENTE_DESTINO"].ToString(), CodigoProgramacionRuta = Convert.ToInt32(item["INT_CODIGO_PROGRAMACION_RUTA"].ToString()), EstadoCarga = item["CHR_ESTADO"].ToString() };
                carga.ClienteOrigen = ECliente.f_BuscaClienteDNI(carga.DNIClienteOrigen);
                carga.ClienteDestino = ECliente.f_BuscaClienteDNI(carga.DNIClienteDestino);
                carga.ProgramacionRuta = EProgramacionRuta.f_BuscaProgramacionXCodigo(carga.CodigoProgramacionRuta);
                carga.Estado = EEstado.f_BuscarUtilXCodigo(carga.EstadoCarga, "ES");
                lst.Add(carga);                
            }

            return lst;
        }

        public BE_Carga f_InsertarCarga(string documentoClienteOrigen, 
            string documentoClienteDestino, 
            int TipoCarga, 
            int TipoPago, 
            string Observaciones, 
            double peso, 
            double largo, 
            double ancho, 
            double profundidad, 
            int programacionRuta)
        {
            SqlParameter[] param = new SqlParameter[12];
            param[0] = new SqlParameter("VCH_DOC_CLIENTE_ORIGEN", SqlDbType.VarChar);
            param[0].Value = documentoClienteOrigen;
            param[0].Direction = ParameterDirection.Input;
            param[1] = new SqlParameter("VCH_DOC_CLIENTE_DESTINO", SqlDbType.VarChar);
            param[1].Value = documentoClienteDestino;
            param[1].Direction = ParameterDirection.Input;
            param[2] = new SqlParameter("INT_TIPO_CARGA", SqlDbType.Int);
            param[2].Value = TipoCarga;
            param[2].Direction = ParameterDirection.Input;
            param[3] = new SqlParameter("INT_TIPO_PAGO", SqlDbType.Int);
            param[3].Value = TipoPago;
            param[3].Direction = ParameterDirection.Input;
            param[4] = new SqlParameter("VCH_OBSERVACIONES", SqlDbType.VarChar);
            param[4].Value = Observaciones;
            param[4].Direction = ParameterDirection.Input;
            param[5] = new SqlParameter("DBL_PESO", SqlDbType.Decimal);
            param[5].Value = peso;
            param[5].Direction = ParameterDirection.Input;
            param[6] = new SqlParameter("DBL_LARGO", SqlDbType.Decimal);
            param[6].Value = largo;
            param[6].Direction = ParameterDirection.Input;
            param[7] = new SqlParameter("DBL_ANCHO", SqlDbType.Decimal);
            param[7].Value = ancho;
            param[7].Direction = ParameterDirection.Input;
            param[8] = new SqlParameter("DBL_PROFUNDIDAD", SqlDbType.Decimal);
            param[8].Value = profundidad;
            param[8].Direction = ParameterDirection.Input;
            param[9] = new SqlParameter("INT_PROGRAMACION_RUTA", SqlDbType.Int);
            param[9].Value = programacionRuta;
            param[9].Direction = ParameterDirection.Input;

            param[10] = new SqlParameter("VCH_CODIGO_SEGURIDAD", SqlDbType.VarChar, 10);            
            param[10].Direction = ParameterDirection.Output;

            param[11] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[11].Direction = ParameterDirection.Output;

            BE_Carga entidad = null;
            try
            {
                int result = SqlHelper.ExecuteNonQuery(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_INSERTARCARGA", param);

                entidad = new BE_Carga()
                {
                    Ancho = ancho,
                    Largo = largo,
                    Profundidad = profundidad,
                    Peso = peso,
                    DNIClienteOrigen = documentoClienteOrigen,
                    DNIClienteDestino = documentoClienteDestino,
                    Observacion = Observaciones,
                    TipoCarga = TipoCarga,
                    TipoPago = TipoPago,
                    CodigoProgramacionRuta = programacionRuta,
                    EstadoCarga = "IN",
                    CodigoSeguridad = param[10].Value.ToString(),
                    CodigoCarga = Convert.ToInt32(param[11].Value.ToString())
                };

                int tipomovimiento = Convert.ToInt16(EEstado.f_BuscarUtilXCodigo("1", "TM").Codigo);
                string estado = EEstado.f_BuscarUtilXCodigo("IN", "ES").Nombre;
                string descripcion = "Registro de movimiento de carga " + entidad.secuenciaCarga + " en estado " + estado;
                EFMovimiento.f_InsertarMovimiento(descripcion, entidad.CodigoCarga, tipomovimiento);
            }
            catch (Exception ex) 
            { 
            
            }
            
            return entidad;
        }

        public bool f_ActualizarCarga(int codigoCarga, string Observaciones, int programacionRuta, string documentoClienteDestino, string estado)
        {
            SqlParameter[] param = new SqlParameter[5];
            param[0] = new SqlParameter("VCH_OBSERVACIONES", SqlDbType.VarChar);
            param[0].Value = Observaciones;
            param[0].Direction = ParameterDirection.Input;
            param[1] = new SqlParameter("INT_PROGRAMACION_RUTA", SqlDbType.Int);
            param[1].Value = programacionRuta;
            param[1].Direction = ParameterDirection.Input;
            param[2] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[2].Value = codigoCarga;
            param[2].Direction = ParameterDirection.Input;
            param[3] = new SqlParameter("VCH_DNI_DESTINO", SqlDbType.VarChar);
            param[3].Value = documentoClienteDestino;
            param[3].Direction = ParameterDirection.Input;
            param[4] = new SqlParameter("VCH_ESTADO", SqlDbType.Char, 2);
            param[4].Value = estado;
            param[4].Direction = ParameterDirection.Input;

            bool entidad = true;
            try
            {
                int result = SqlHelper.ExecuteNonQuery(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_ACTUALIZARCARGA", param);

                int tipomovimiento = Convert.ToInt16(EEstado.f_BuscarUtilXCodigo("2", "TM").Codigo);
                string strEstado = EEstado.f_BuscarUtilXCodigo(estado, "ES").Nombre;

                if (EFMovimiento.f_VerificarMovimientoCarga(codigoCarga, strEstado) == 0)
                {
                    string descripcion = "Registro de movimiento de carga " + codigoCarga.ToString().PadLeft(10, '0') + " en estado " + estado;
                    EFMovimiento.f_InsertarMovimiento(descripcion, codigoCarga, tipomovimiento);
                }
            }
            catch (Exception ex)
            {
                entidad = false;
            }

            return entidad;
        }

        public bool f_EliminarCarga(int codigoCarga)
        {
            SqlParameter[] param = new SqlParameter[1];
            param[0] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[0].Value = codigoCarga;
            param[0].Direction = ParameterDirection.Input;

            bool entidad = true;
            try
            {
                int result = SqlHelper.ExecuteNonQuery(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_ELIMINARCARGA", param);

            }
            catch (Exception ex)
            {
                entidad = false;
            }

            return entidad;
        }


        public List<BE_Carga> f_ListarCargasNuevasProgramacionRuta(int idProgramacionRuta, string idCodigosCarga)
        {
            List<BE_Carga> lst = new List<BE_Carga>();
            SqlParameter[] param = new SqlParameter[2];

            idCodigosCarga = idCodigosCarga.Replace("*", "");

            if(idCodigosCarga.Trim() != "")
                idCodigosCarga = idCodigosCarga.Substring(0, idCodigosCarga.Length - 1);

            param[0] = new SqlParameter("INT_CODIGO_RUTA_PROGRAMADA", SqlDbType.Int);
            param[0].Value = idProgramacionRuta;
            param[0].Direction = ParameterDirection.Input;
            param[1] = new SqlParameter("VCH_CARGAS_ACTUALES", SqlDbType.VarChar);
            param[1].Value = idCodigosCarga;
            param[1].Direction = ParameterDirection.Input;

            DataSet ds = SqlHelper.ExecuteDataSet(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_BUSCARCARGASPROGRAMACIONRUTANUEVAS", param);

            BE_Carga carga;
            foreach (DataRow item in ds.Tables[0].Rows)
            {
                carga = new BE_Carga() 
                {   
                    CodigoCarga = Convert.ToInt32(item["INT_CODIGO_CARGA"].ToString()),
                    DesTipoCarga = item["TIPOCARGA"].ToString(),
                    Observacion = item["VCH_OBSERVACION"].ToString(),
                    Peso = Convert.ToDouble(item["DBL_PESO"].ToString()),
                    TipoTransporte = item["TIPOTRANSPORTE"].ToString(),
                    TipoServicio = item["TIPOSERVICIO"].ToString(),
                    FechaOrigen = Convert.ToDateTime(item["DTM_FECHA_ORIGEN"].ToString()).ToString("dd/MM/yyyy HH:mm"),
                    FechaDestino = Convert.ToDateTime(item["DTM_FECHA_DESTINO"].ToString()).ToString("dd/MM/yyyy HH:mm"),                    
                    
                };
                lst.Add(carga);
            }

            return lst;
        }

        public List<BE_Carga> f_ListarCargasProgramacionRuta(int programacionRutaID)
        {
            List<BE_Carga> lst = new List<BE_Carga>();
            SqlParameter[] param = new SqlParameter[1];
            param[0] = new SqlParameter("INT_CODIGO_RUTA_PROGRAMADA", SqlDbType.Int);
            param[0].Value = programacionRutaID;
            param[0].Direction = ParameterDirection.Input;

            DataSet ds = SqlHelper.ExecuteDataSet(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_BUSCARCARGASPROGRAMACIONRUTA", param);

            BE_Carga carga;
            foreach (DataRow item in ds.Tables[0].Rows)
            {
                carga = new BE_Carga() 
                { 
                    CodigoCarga = Convert.ToInt32(item["INT_CODIGO_CARGA"].ToString()), 
                    DesTipoCarga = item["TIPOCARGA"].ToString(),
                    Observacion = item["VCH_OBSERVACION"].ToString(),                    
                };
                lst.Add(carga);
            }

            return lst;
        }

        public List<BE_Carga> f_ListarCargasProgramacionRutaPorGuiaRemision(int programacionRutaID)
        {
            List<BE_Carga> lst = new List<BE_Carga>();
            SqlParameter[] param = new SqlParameter[1];
            param[0] = new SqlParameter("INT_CODIGO_GUIA_REMISION", SqlDbType.Int);
            param[0].Value = programacionRutaID;
            param[0].Direction = ParameterDirection.Input;

            DataSet ds = SqlHelper.ExecuteDataSet(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_BUSCARCARGASGUIAREMISION", param);

            BE_Carga carga;
            foreach (DataRow item in ds.Tables[0].Rows)
            {
                carga = new BE_Carga()
                {
                    CodigoCarga = Convert.ToInt32(item["INT_CODIGO_CARGA"].ToString()),
                    DesTipoCarga = item["TIPOCARGA"].ToString(),
                    Observacion = item["VCH_OBSERVACION"].ToString(),
                };
                lst.Add(carga);
            }

            return lst;
        }

        public List<BE_Carga> f_ListarCargasArribar(string fechaPartida, string fechaLlegada, int origen, int destino, string estado, int guia)
        {
            List<BE_Carga> lst = new List<BE_Carga>();
            SqlParameter[] param = new SqlParameter[6];
            param[0] = new SqlParameter("DTM_FECHA_LLEGADA", SqlDbType.VarChar);
            param[0].Value = fechaPartida;
            param[0].Direction = ParameterDirection.Input;
            param[1] = new SqlParameter("DTM_FECHA_SALIDA", SqlDbType.VarChar);
            param[1].Value = fechaLlegada;
            param[1].Direction = ParameterDirection.Input;
            param[2] = new SqlParameter("INT_UBIGEO_ORIGEN", SqlDbType.Int);
            param[2].Value = origen;
            param[2].Direction = ParameterDirection.Input;
            param[3] = new SqlParameter("INT_UBIGEO_DESTINO", SqlDbType.Int);
            param[3].Value = destino;
            param[3].Direction = ParameterDirection.Input;
            param[4] = new SqlParameter("CHR_ESTADO", SqlDbType.VarChar);
            param[4].Value = estado;
            param[4].Direction = ParameterDirection.Input;
            param[5] = new SqlParameter("INT_GUIA", SqlDbType.Int);
            param[5].Value = guia;
            param[5].Direction = ParameterDirection.Input;

            DataSet ds = SqlHelper.ExecuteDataSet(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_LISTARCARGAXGUIA", param);

            BE_Carga carga;
            foreach (DataRow item in ds.Tables[0].Rows)
            {
                carga = new BE_Carga() { CodigoCarga = Convert.ToInt32(item["INT_CODIGO_CARGA"].ToString()), NombreClienteOrigen = item["CLIENTE_ORIGEN"].ToString(), Departamento = item["DEPARTAMENTO"].ToString(), FechaRegistro = Convert.ToDateTime(item["DTM_FECHA_ORIGEN"].ToString()), NombreTipoPago = item["TIPO_PAGO"].ToString() };
                lst.Add(carga);
            }

            return lst;
        }
    }
}
